package es.udc.acs.utils;

public class CodigosFAP {

	// Codigos de mensaje
	// control
	public static final String CM_C_PC_RECUPERACION          = "01"; 
	public static final String CM_C_PC_FIN_RECUPERACION      = "02"; 
	
	public static final String CM_B_RC_RECUPERACION          = "91";
	public static final String CM_B_RC_FIN_RECUPERACION      = "92";
	
	public static final String CM_C_RC_ABRIR_SESION          = "11"; 
	public static final String CM_C_RC_DETENER_TRAFICO       = "13";
	public static final String CM_C_RC_REANUDAR_TRAFICO      = "14";
	public static final String CM_C_RC_CIERRE_SESION         = "12";
	
	public static final String CM_B_PC_ABRIR_SESION          = "81"; 
	public static final String CM_B_PC_DETENER_TRAFICO       = "83";
	public static final String CM_B_PC_REANUDAR_TRAFICO      = "84";
	public static final String CM_B_PC_CIERRE_SESION         = "82";
	
	// datos
	public static final String CM_C_PD_CONSULTAR_SALDO       = "31";
	public static final String CM_C_PD_CONSULTAR_MOVIMIENTOS = "32";
	public static final String CM_C_PD_REINTEGRO             = "33";
	public static final String CM_C_PD_ABONO                 = "34";
	public static final String CM_C_PD_TRASPASO              = "35";
	
	public static final String CM_B_RD_CONSULTAR_SALDO       = "61";
	public static final String CM_B_RD_CONSULTAR_MOVIMIENTOS = "62";
	public static final String CM_B_RD_REINTEGRO             = "63";
	public static final String CM_B_RD_ABONO                 = "64";
	public static final String CM_B_RD_TRASPASO              = "65";

	
	// Codigos respuesta	
	public static final String CR_CONSULTA_ACEPTADA          = "00"; 
	public static final String CR_CONSULTA_DENEGADA          = "10"; 
	public static final String CR_CONSULTA_DENEGADA_CT       = "11";
	public static final String CR_CONSULTA_DENEGADA_TNV      = "12";
	public static final String CR_CONSULTA_DENEGADA_CENV     = "13";
	public static final String CR_CONSULTA_DENEGADA_IMLC     = "14";
	public static final String CR_CONSULTA_DENEGADA_TOMTD    = "21";
	public static final String CR_CONSULTA_DENEGADA_TONF     = "22";
	public static final String CR_CONSULTA_DENEGADA_CONV     = "23";
	public static final String CR_CONSULTA_DENEGADA_CDNV     = "24";
	
	
	// Codigos Error	
	public static final String CE_CORRECTO                   = "00";
	public static final String CE_SESION_YA_ABIERTA          = "30";
	public static final String CE_MSN_FUERA_SECUENCIA        = "31";
	public static final String CE_MSN_CANAL_OCUPADO          = "32";
	public static final String CE_TRAFICO_NO_DETENIDO        = "33";
	public static final String CE_NO_RECUPERACION            = "34";
	public static final String CE_NO_EXISTE_SESION           = "35";
	public static final String CE_OTRAS_CAUSAS               = "99";
	
	
	// Tipos de movimiento
	public static final String TM_REINTEGRO                  = "10";
	public static final String TM_TRASPASO_EMITIDO           = "11";
	public static final String TM_TRASPASO_RECIBIDO          = "12";
	public static final String TM_PAGO_RECIBO                = "13";
	public static final String TM_ABONO                      = "50";
	public static final String TM_COBRO_CHEQUE               = "51";
	public static final String TM_OTROS                      = "99";
	
	
	// Codigo para respuesta de recuperacion
	public static final String RE_RESPUESTA                  = "RE";
	public static final String NO_RESPUESTA                  = "NR";
	public static final String CODRE_CORRECTA                = "00";
	public static final String CODRE_DENEGADA                = "11";

	
	public static boolean esControl(String cod) {
		
		return (cod.equals(CM_C_PC_RECUPERACION) 
				|| cod.equals(CM_C_PC_FIN_RECUPERACION) 
			    || cod.equals(CM_B_RC_RECUPERACION) 
			    || cod.equals(CM_B_RC_FIN_RECUPERACION) 		
			    || cod.equals(CM_C_RC_ABRIR_SESION) 
			    || cod.equals(CM_C_RC_DETENER_TRAFICO) 			
			    || cod.equals(CM_C_RC_REANUDAR_TRAFICO) 
			    || cod.equals(CM_C_RC_CIERRE_SESION) 
			    || cod.equals(CM_B_PC_ABRIR_SESION) 
			    || cod.equals(CM_B_PC_DETENER_TRAFICO) 
			    || cod.equals(CM_B_PC_REANUDAR_TRAFICO) 
			    || cod.equals(CM_B_PC_CIERRE_SESION));		
	}
	
	
	public static boolean esDatos(String cod) {
		
		return (cod.equals(CM_C_PD_CONSULTAR_SALDO) 
				|| cod.equals(CM_C_PD_CONSULTAR_MOVIMIENTOS) 
			    || cod.equals(CM_C_PD_REINTEGRO) 
			    || cod.equals(CM_C_PD_ABONO) 			
			    || cod.equals(CM_C_PD_TRASPASO) 
			    || cod.equals(CM_B_RD_CONSULTAR_SALDO) 			
			    || cod.equals(CM_B_RD_CONSULTAR_MOVIMIENTOS) 
			    || cod.equals(CM_B_RD_REINTEGRO) 
			    || cod.equals(CM_B_RD_ABONO) 
			    || cod.equals(CM_B_RD_TRASPASO) );	
	}
	
	
	public static boolean esRespuestaDatos(String cod) {
		
		return (cod.equals(CM_B_RD_CONSULTAR_SALDO) 			
				|| cod.equals(CM_B_RD_CONSULTAR_MOVIMIENTOS)
			    || cod.equals(CM_B_RD_REINTEGRO) 
			    || cod.equals(CM_B_RD_ABONO)
			    || cod.equals(CM_B_RD_TRASPASO) );	
	}
	
	public static boolean esRespuestaValida(String cod){
		return (cod.equals(CR_CONSULTA_ACEPTADA)
				|| cod.equals(CR_CONSULTA_DENEGADA)
				|| cod.equals(CR_CONSULTA_DENEGADA_CT)
				|| cod.equals(CR_CONSULTA_DENEGADA_TNV)
				|| cod.equals(CR_CONSULTA_DENEGADA_CENV)
				|| cod.equals(CR_CONSULTA_DENEGADA_IMLC)
				|| cod.equals(CR_CONSULTA_DENEGADA_TOMTD)
				|| cod.equals(CR_CONSULTA_DENEGADA_TONF)
				|| cod.equals(CR_CONSULTA_DENEGADA_CONV)
				|| cod.equals(CR_CONSULTA_DENEGADA_CDNV) );
	}
	
	public static String obtenerTipoRespuesta(String tipo) {		

		if (tipo.equals(CM_C_PD_CONSULTAR_SALDO)) {			
			return CM_B_RD_CONSULTAR_SALDO;
		} else if (tipo.equals(CM_C_PD_CONSULTAR_MOVIMIENTOS)) {			
			return CM_B_RD_CONSULTAR_MOVIMIENTOS;
		} else if (tipo.equals(CM_C_PD_REINTEGRO)) {		
			return CM_B_RD_REINTEGRO;
		} else if (tipo.equals(CM_C_PD_ABONO)) {
			return CM_B_RD_ABONO;
		} else if (tipo.equals(CM_C_PD_TRASPASO)) {
			return CM_B_RD_TRASPASO;
		} else if (tipo.equals(CM_C_PC_RECUPERACION)) {			
			return CM_B_RC_RECUPERACION;
		} else if (tipo.equals(CM_C_PC_FIN_RECUPERACION)) { 			
			return CM_B_RC_FIN_RECUPERACION;
		} else if (tipo.equals(CM_B_PC_ABRIR_SESION)) { 			
			return CM_C_RC_ABRIR_SESION;
		} else if (tipo.equals(CM_B_PC_DETENER_TRAFICO)) { 			
			return CM_C_RC_DETENER_TRAFICO;
		} else if (tipo.equals(CM_B_PC_REANUDAR_TRAFICO)) { 			
			return CM_C_RC_REANUDAR_TRAFICO;
		} else if (tipo.equals(CM_B_PC_CIERRE_SESION)) { 			
			return CM_C_RC_CIERRE_SESION;
		}
		
		return null;
	}
	
	public static String obtenerNombreCodigo(String codigo) {
		
		String desc = "Desconocido";
		
		if (codigo.equals(CM_C_PC_RECUPERACION)) {			
			desc = "Solicitar Trafico en Recuperacion";
		} else if (codigo.equals(CM_C_PC_FIN_RECUPERACION)) {			
			desc = "Solicitar Fin de Trafico en Recuperacion";
		} else if (codigo.equals(CM_B_RC_RECUPERACION)) {			
			desc = "Trafico en Recuperacion";
		} else if (codigo.equals(CM_B_RC_FIN_RECUPERACION)) {			
			desc = "Fin de Recuperacion";
		} else if (codigo.equals(CM_C_RC_ABRIR_SESION)) {			
			desc = "Abrir sesion";
		} else if (codigo.equals(CM_C_RC_DETENER_TRAFICO))  {			
			desc = "Detener trafico";
		} else if (codigo.equals(CM_C_RC_REANUDAR_TRAFICO)) {
			desc = "Reanudar trafico";
		} else if (codigo.equals(CM_C_RC_CIERRE_SESION)) {
			desc = "Cierre de sesion";
		} else if (codigo.equals(CM_B_PC_ABRIR_SESION)) {			
			desc = "Solicitar Abrir Sesion";
		} else if (codigo.equals(CM_B_PC_DETENER_TRAFICO)) {			
			desc = "Solicitar Detener Trafico";
		} else if (codigo.equals(CM_B_PC_REANUDAR_TRAFICO)) {			
			desc = "Solicitar Reanudar Trafico";
		} else if (codigo.equals(CM_B_PC_CIERRE_SESION)) {			
			desc = "Solicitar Cierre de Sesion";
		} else if (codigo.equals(CM_C_PD_CONSULTAR_SALDO)) {			
			desc = "Consultar Saldo";
		} else if (codigo.equals(CM_C_PD_CONSULTAR_MOVIMIENTOS)) {			
			desc = "Consultar Movimientos";
		} else if (codigo.equals(CM_C_PD_REINTEGRO)) {			
			desc = "Reintegro";
		} else if (codigo.equals(CM_C_PD_ABONO)) {			
			desc = "Abono";
		} else if (codigo.equals(CM_C_PD_TRASPASO)) {			
			desc = "Traspaso";
		} else if (codigo.equals(CM_B_RD_CONSULTAR_SALDO)) {			
			desc = "Resultado Consulta del Saldo";
		} else if (codigo.equals(CM_B_RD_CONSULTAR_MOVIMIENTOS)) {			
			desc = "Resultado Consulta de Movimientos";
		} else if (codigo.equals(CM_B_RD_REINTEGRO)) {			
			desc = "Resultado Reintegro";
		} else if (codigo.equals(CM_B_RD_ABONO)) {			
			desc = "Resultado Abono";
		} else if (codigo.equals(CM_B_RD_TRASPASO)) {			
			desc = "Resultado Traspaso";
		}
		
		return codigo+"|"+desc;
	}
	
	
	public static String obtenerNombreRespuesta(String tipo) {	
		
		String desc = "Desconocido";
		
		if (tipo.equals(CR_CONSULTA_ACEPTADA)) {			
			desc = "Consulta Aceptada";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA)) {			
			desc = "Consulta Denegada";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_CT)) {			
			desc = "Consulta Denegada con Captura de Tarjeta";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_TNV)) {			
			desc = "Consulta Denegada, Tarjeta no Valida";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_CENV)) {			
			desc = "Consulta Denegada, Cuenta especificada no valida";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_IMLC))  {			
			desc = "Consulta Denegada, el importe especificado excede el limite" 
					+" para la cuenta especificada";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_TOMTD)) {
			desc = "Consulta Denegada, en operacion de traspaso la cuenta origen" 
					+" es igual a la cuenta destino";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_TONF)) {
			desc = "Consulta Denegada, en operacion de traspaso la cuenta origen"
					+" no tiene fondos suficientes parar traspasar el importe" 
					+" especificado";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_CONV)) {			
			desc = "Consulta Denegada, En operacion de traspaso la cuenta origen" 
					+" no es valida";
		} else if (tipo.equals(CR_CONSULTA_DENEGADA_CDNV)) {			
			desc = "Consulta Denegada, En operacion de traspaso la cuenta destino" 
					+" no es valida";
		}
		
		return tipo+"|"+desc;
	}

	
	public static String obtenerNombreError(String tipo) {	
		
		String desc = "Desconocido";
		
		if (tipo.equals(CE_CORRECTO)) {			
			desc = "Correcto";
		} else if (tipo.equals(CE_SESION_YA_ABIERTA)) {			
			desc = "La sesion ya estaba abierta";
		} else if (tipo.equals(CE_MSN_FUERA_SECUENCIA)) {			
			desc = "Mensaje fuera de secuencia";
		} else if (tipo.equals(CE_MSN_CANAL_OCUPADO)) {			
			desc = "Mensaje por un canal ocupado";
		} else if (tipo.equals(CE_TRAFICO_NO_DETENIDO)) {			
			desc = "Trafico no detenido";
		} else if (tipo.equals(CE_NO_RECUPERACION))  {			
			desc = "No esta establecida la recuperacion";
		} else if (tipo.equals(CE_NO_EXISTE_SESION)) {
			desc = "Peticion denegada por no existir sesion";
		} else if (tipo.equals(CE_OTRAS_CAUSAS)) {
			desc = "Consulta Denegada por otra causas";
		}
		
		return tipo+"|"+desc;
	}
	
	public static String obtenerNombreMovimiento(String tipo) {		
		
		String desc = "Desconocido";
		
		if (tipo.equals(TM_REINTEGRO)) {			
			desc = "Reintegro";
		} else if (tipo.equals(TM_TRASPASO_EMITIDO)) {			
			desc = "Traspaso Emitido";
		} else if (tipo.equals(TM_TRASPASO_RECIBIDO)) {			
			desc = "Traspaso Recibido";
		} else if (tipo.equals(TM_PAGO_RECIBO)) {			
			desc = "Pago de Recibo";
		} else if (tipo.equals(TM_ABONO)) {			
			desc = "Abono";
		} else if (tipo.equals(TM_COBRO_CHEQUE))  {			
			desc = "Cobro de cheque";
		} else if (tipo.equals(TM_OTROS)) {
			desc = "Otros";
		}
		
		return tipo+"|"+desc;
	}
}
